package cn.tedu.cwgl.service.impl;

import cn.tedu.cwgl.entity.Curaccount;
import cn.tedu.cwgl.entity.UserInfo;
import cn.tedu.cwgl.mapper.CuraccountMapper;
import cn.tedu.cwgl.service.CuraccountService;
import cn.tedu.cwgl.util.Config;
import cn.tedu.cwgl.util.PageModel;
import cn.tedu.cwgl.util.Result;
import cn.tedu.cwgl.util.ResultUtil;
import org.springframework.stereotype.Service;


import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.List;

@Service
public class CuraccountServiceImpl implements CuraccountService {
    @Resource
    private CuraccountMapper curaccountMapper;

    @Override
    public Result<Curaccount> getCuraccount(PageModel model) {
        List<Curaccount> curaccounts = curaccountMapper.getCuraccount(model);
        if (curaccounts.size() >= 0) {
            Result<Curaccount> result = ResultUtil.success(curaccounts);
            result.setTotal(curaccountMapper.getTotalAccount(model));
            if (result.getTotal() == 0) {
                result.setMsg("查询不到任何相关数据");
            } else {
                result.setMsg("数据获取成功");
            }
            return result;
        } else {
            return ResultUtil.unSuccess("没有找到符合条件的属性！！");
        }
    }

    @Override
    public int delete(Curaccount curaccount) {
        return curaccountMapper.delete(curaccount);
    }

    @Override
    public int updateBill(Curaccount curaccount) {
        return curaccountMapper.updateBill(curaccount);
    }

    private UserInfo getSessionUser(HttpSession session) {
        UserInfo user = (UserInfo) session.getAttribute(Config.CURRENT_USERNAME);
        user.setPassword(null);
        return user;
    }

    @Override
    public int addBill(Curaccount curaccount, HttpSession session) {
        UserInfo users = curaccountMapper.getUserByRealName(curaccount);
        if (users.getRoleid() == 3 && getSessionUser(session).getRoleid() == 3) {
            curaccount.setUserid(getSessionUser(session).getId());
            curaccount.setHouseid(getSessionUser(session).getHouseid());
            return curaccountMapper.addBill(curaccount);
        } else if (users.getRoleid() >= 2 && getSessionUser(session).getRoleid() == 2 ||
                getSessionUser(session).getRoleid() == 1) {
            curaccount.setUserid(users.getId());
            curaccount.setHouseid(users.getHouseid());
            return curaccountMapper.addBill(curaccount);
        }
        return 0;
    }
}
